Dashboard Temp Share Shortlinks Frames API

HTMLify

560. Subarray Sum Equals K.java
Views: 1 | Author: cody
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 560. Subarray Sum Equals K o(n) t.c. solution
class Solution {
    public int[] psum(int[] nums){
        int[] ps=new int[nums.length];
        ps[0]=nums[0];
        for(int i=1;i<nums.length;i++){
            ps[i]=nums[i]+ps[i-1];
        }
        return ps;
    }
    public int subarraySum(int[] nums, int k) {
        HashMap<Integer,Integer> map=new HashMap<>();
        int n=nums.length;
        int ans=0;
        int[] ps=psum(nums);
        map.put(0,1);
        for(int ep=0;ep<n;ep++){
            int diff=ps[ep]-k;
            ans=ans+map.getOrDefault(diff,0);
            map.put(ps[ep],map.getOrDefault(ps[ep],0)+1);
        }
        return ans;
    }
}